/**
 * @author: shmet
 * @date: 2023/2/3
 * @desc: api使用文档
 */
export const DOC_HELP = [
    {
        "id": "1",
        "deleteType": 0,
        "name": "1、说明",
        "showOrder": 1,
        "functions": [
            {
                "id": "1",
                "deleteType": 0,
                "name": "1.1 获取sdk对象实例",
                "remark": "getWeFormInstance()",
                "returnValue": "当前页面SDK",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| moduleKey | string | 否 | 模块或模块标识 | \n" +
                    "| formId | string | 否 | 表单id | \n" +
                    "| dataId | string | 否 | 表单数据id | \n" +
                    "\n\n" +
                    "##### 返回值 \n 当前页面SDK \n\n" +
                    "##### 示例 \n ```typescript\n" +
                    "//获取最上层活动窗口的实例\n" +
                    "1、window.WeFormSDK.getWeFormInstance()  \n" +
                    "//获取以moduleKey为隔离的最上层活动窗口实例\n" +
                    "2、window.WeFormSDK.getWeFormInstance(moduleKey)\n" +
                    "//获取以moduleKey和formId为隔离的最上层活动窗口实例\n" +
                    "3、window.WeFormSDK.getWeFormInstance(moduleKey, formId)\n" +
                    "//获取以moduleKey、formId和dataId为隔离的最上层活动窗口实例\n" +
                    "4、window.WeFormSDK.getWeFormInstance(moduleKey, formId, dataId)\n" +
                    "注：E10单个页面，可能会打开多份表单，有条件的情况下，建议使用粒度细的方式，以避免出现获取到其他表单的实例" +
                    "```\n",
                "category": 1,
                "showOrder": 0,
                "params": []
            },
            {
                "id": "2",
                "deleteType": 0,
                "name": "1.2 表单加载完成回调事件",
                "remark": "window.ebuilderSDK.getPageSDK().on('formReady',(args)=>{})",
                "returnValue": "初始化完毕回调",
                "example": "##### 参数说明 \n 无 \n\n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript\n" +
                    "// 通过Eb绑定异步回调，类似于jquery.onLoad; 参考以下两种形式\n" +
                    "1、const pageSdk = window.ebuilderSDK.getPageSDK();pageSdk.on('formReady', (args) => {console.log(args)});\n" +
                    "2、window.ebuilderSDK.getPageSDK().on('formReady',(args)=>{console.log(args)});" +
                    "```",
                "category": 1,
                "showOrder": 0
            }
        ]
    },
    {
        "id": "2",
        "deleteType": 0,
        "name": "2.表单事件注册",
        "showOrder": 2,
        "functions": [
            {
                "id": "21",
                "deleteType": 0,
                "name": "2.1 注册拦截事件，指定动作执行前触发，并可阻断/放行后续操作",
                "remark": "registerCheckEvent(type: string, fun: (successFn: Function, failFn: Function) => void): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| type | string | 是 | 动作类型(详见下表)，多个逗号分隔 | \n" +
                    "| fun | Function | 否 | 自定义函数，此函数入参为callback，执行自定义逻辑完成或异步ajax的success函数体内，放行需调用callback，不调用代表阻断后续操作。 <span style='color: red'>注：一定要调用成功或者失败</span> | \n" +
                    "\n\n" +
                    "动作类型" +
                    "\n\n" +
                    "| 类型 | 说明   |\n" +
                    "| --- | --- | \n" +
                    "| WeFormSDK.OPER_SAVE | 保存; <span style='color: red'>注：这个是表单的数据保存，如果需要操作模块按钮，请使用模块SDK提供的事件</span> 审批文档地址： https://weapp.eteams.cn/sp/techdoc/view/716154026911416320/720609767701430272| \n" +
                    "| WeFormSDK.OPER_ADDROW | 添加明细行，需拼明细表标识fieldMark | \n" +
                    "| WeFormSDK.OPER_DELROW | 删除明细行，需拼明细表标识fieldMark | \n" +
                    "| WeFormSDK.OPER_BEFOREVERIFY | 校验必填前触发事件 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 注册保存事件\n" +
                    "    weFormSdk.registerCheckEvent(window.WeFormSDK.OPER_SAVE, (successFn: Function, failFn: Function)=>{\n" +
                    "        // ...执行定义逻辑\n" +
                    "        // 如果是移动端，则向下调用，如果非移动端则阻塞调用\n" +
                    "        window.WeFormSDK.isMobile() ? successFn() : failFn();\n" +
                    "    });\n" +
                    "    // 明细表添加行事件\n" +
                    "    // 根据dataKey获取明细表标识\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\", \"main\", true);\n" +
                    "    weFormSdk.registerCheckEvent(`${window.WeFormSDK.OPER_ADDROW}${detailMark}`, (successFn: Function, failFn: Function)=>{\n" +
                    "        // ...执行定义逻辑\n" +
                    "        // 如果是移动端，则允许添加，非移动端阻塞添加\n" +
                    "        window.WeFormSDK.isMobile() ? successFn() : failFn();\n" +
                    "    });\n" +
                    "// 注： dataKey为数据key，在设计器的右侧可以看到" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "22",
                "deleteType": 0,
                "name": "2.2 注册钩子事件，指定动作完成后触发",
                "remark": "registerAction(type: string, fun: (data: any) => void): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| type | string | 是 | 动作类型(详见下表) | \n" +
                    "| fun | Function | 否 | 触发事件, 参数data: any类型 | \n" +
                    "\n\n" +
                    "动作类型" +
                    "\n\n" +
                    "| 类型 | 说明   |\n" +
                    "| --- | --- | \n" +
                    "| WeFormSDK.ACTION_ADDROW | 添加明细行，需拼明细表标识fieldMark | \n" +
                    "| WeFormSDK.ACTION_DELROW | 删除明细行，需拼明细表标识fieldMark | \n" +
                    "| WeFormSDK.ACTION_FORM_SUBMIT | 表单提交完成回调 | \n" +
                    "| WeFormSDK.ACTION_FORM_SAVE | 表单保存完成回调 | \n" +
                    "| WeFormSDK.ACTION_DATA_LINKAGE | 数据联动执行后 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\", \"main\", true);\n" +
                    "    // 明细表添加行事件，index为添加行下标，从0开始\n" +
                    "    weFormSdk.registerAction(`${window.WeFormSDK.ACTION_ADDROW}${detailMark}`, (index)=>{\n" +
                    "        // ...执行定义逻辑\n" +
                    "        console.log(`添加行下标是${index}`);\n" +
                    "    });\n" +
                    "    // 明细表删除行事件，arg为删除上下标集合，从0开始\n" +
                    "    weFormSdk.registerAction(`${window.WeFormSDK.ACTION_DELROW}${detailMark}`, (arg)=>{\n" +
                    "        // ...执行定义逻辑\n" +
                    "        console.log(`删除行下标是${arg.join(\",\")}`);\n" +
                    "    });" +
                    "    // 表单提交完毕回调\n" +
                    "    weFormSdk.registerAction(`${window.WeFormSDK.ACTION_FORM_SUBMIT}`, (arg)=>{\n" +
                    "        // ...执行定义逻辑\n" +
                    "        console.log(arg);\n" +
                    "    });" +
                    "```",
                "category": 2,
                "showOrder": 0
            }
        ]
    },
    {
        "id": "3",
        "deleteType": 0,
        "name": "3.字段基础操作",
        "showOrder": 3,
        "functions": [
            {
                "id": "31",
                "deleteType": 0,
                "name": "3.1 将字段名称转换成字段id",
                "remark": "convertFieldNameToId(fieldName: string, symbol?: string, prefix?: boolean): string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldName | string | 是 | 表单字段dataKey，查看位置: 在设计器中，选中表单字段，右侧的'数据key'或'数据库表名' | \n" +
                    "| symbol | String | 否 | 表单标示，主表(main)/具体明细表(detailMark)； 注: key不重复的情况下，可以简化该参数 | \n" +
                    "| prefix | Boolean | 否 | 返回值是否需要field字符串前缀，默认为true | \n" +
                    "##### 返回值 \n 字段id \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取字段的fieldId\n" +
                    "    const fieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    // 获取明细字段的fieldId\n" +
                    "    const detailFieldMark = weFormSdk.convertFieldNameToId(\"mx_wbk\");\n\n" +
                    "    // 如果数据key有重复的, 参考这个示例\n" +
                    "    // 获取主表字段fieldId, symbol传“main”\n" +
                    "    const fieldMark = weFormSdk.convertFieldNameToId(\"wbk\", \"main\");\n" +
                    "    // 获取明细表的Id\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 获取明细表：“detailMark”下的明细字段fieldId\n" +
                    "    const detailFieldMark = weFormSdk.convertFieldNameToId(\"wbk\", detailMark);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "32",
                "deleteType": 0,
                "name": "3.2 获取单个字段值",
                "remark": "getFieldValue: (fieldMark: string) => any;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "##### 返回值 \n 字段值 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const fieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    // 获取字段值" +
                    "    const fieldValue = weFormSdk.getFieldValue(fieldMark);\n" +
                    "    // ...文本输入内容，选项型返回选项id\n" +
                    "    console.log(fieldValue);\n\n" +
                    "    // 获取明细行的字段值\n" +
                    "    // 获取明细字段fieldId\n" +
                    "    const mxFieldMark = weFormSdk.convertFieldNameToId(\"mx_wbk\");\n" +
                    "    // 获取明细表fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 获取第一行的rowId\n" +
                    "    const oneRowId = weFormSdk.getDetailRowIdByIndex(detailMark, 1);\n" +
                    "    // 获取明细字段的指定行， 注：`${mxFieldMark}_${oneRowId}`是ES6拼接字符串\n" +
                    "    weFormSdk.getFieldValue(`${mxFieldMark}_${oneRowId}`);\n" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "33",
                "deleteType": 0,
                "name": "3.3 修改单个字段值",
                "remark": "changeFieldValue: (fieldMark: string, valueInfo: any) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| valueInfo | Object | 是 | 字段值信息，非关联、浏览按钮字段格式为{value:\"修改的值\"}, value为string类型; specialObj为浏览按钮信息，数组格式,如:[{id: \"718974312893816832\", name: \"上报demo1\"}]; | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 修改文本型-单行文本字段\n" +
                    "    const textFieldMark = weFormSdk.convertFieldNameToId('dhwbk');\n" +
                    "    weFormSdk.changeFieldValue(textFieldMark, {value: \"单行文本内容\"});\n\n" +
                    "    // 修改选项型-下拉框字段\n" +
                    "    const selectFieldMark = weFormSdk.convertFieldNameToId('xlk');\n" +
                    "    weFormSdk.changeFieldValue(selectFieldMark, {value: \"4765016625940566613\"});\n\n" +
                    "    // 修改选项型-多级下拉字段, 对应选项1、选项11的选项id值\n" +
                    "    const multSelectFieldMark = weFormSdk.convertFieldNameToId('djxlk');\n" +
                    "    weFormSdk.changeFieldValue(multSelectFieldMark, {value: \"4765016625951366628,4765016625951966629\"});\n\n" +
                    "    // 修改日期类型，日期区间格式为\"2022-4-23,2022-4-25\"\n" +
                    "    const dateFieldMark = weFormSdk.convertFieldNameToId('rqxz');\n" +
                    "    weFormSdk.changeFieldValue(dateFieldMark, {value: \"2022-4-23\"});\n\n" +
                    "    // 浏览按钮类型\n" +
                    "    const browserFieldMark = weFormSdk.convertFieldNameToId('glsb');\n" +
                    "    weFormSdk.changeFieldValue(browserFieldMark, {specialObj: [{id: \"718974312893816832\", name: \"上报demo1\"},{id: \"718974312893816833\", name: \"上报demo2\"}]});" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "34",
                "deleteType": 0,
                "name": "3.4 改变单个字段显示属性(只读/必填等)",
                "remark": "changeFieldAttr: (fieldMark: string, viewAttr: number) => void;",
                "example": "##### 无 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| viewAttr | Number | 是 | 改变字段的状态，1：只读，2：可编辑，3：必填，4: 隐藏，5: 隐藏行 | \n" +
                    "##### 返回值 \n 字段值 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取字段fieldId\n" +
                    "    const fieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    // 设置为只读\n" +
                    "    weFormSdk.changeFieldAttr(fieldMark, 1);\n" +
                    "    // 设置为编辑\n" +
                    "    weFormSdk.changeFieldAttr(fieldMark, 2);\n" +
                    "    // 设置为必填\n" +
                    "    weFormSdk.changeFieldAttr(fieldMark, 3);\n" +
                    "    // 设置为隐藏\n" +
                    "    weFormSdk.changeFieldAttr(fieldMark, 4);\n" +
                    "    // 设置为隐藏、隐藏行\n" +
                    "    weFormSdk.changeFieldAttr(fieldMark, 5);\n" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "35",
                "deleteType": 0,
                "name": "3.5 同时修改字段的值及显示属性",
                "remark": "changeSingleField: (fieldMark: string, valueInfo: any, variableInfo?: any) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| valueInfo | Object | 是 | 字段值信息，与接口3.2格式一致，例：{value:”修改的值”} | \n" +
                    "| variableInfo | Object | 否 | 变更属性，例：{viewAttr:3}, 值与3.4一致 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const fieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    // 仅修改内容\n" +
                    "    weFormSdk.changeSingleField(fieldMark, {value: \"只修改文本内容修改\"});" +
                    "    // 同时修改内容与属性\n" +
                    "    weFormSdk.changeSingleField(fieldMark, {value: \"文本内容修改\"}, {viewAttr: 3});" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "36",
                "deleteType": 0,
                "name": "3.6 批量修改字段值或显示属性",
                "remark": "changeMoreField: (changeDatas: any, changeVariable?: any) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| changeDatas | Object | 是 | 修改的字段值信息集合 | \n" +
                    "| changeVariable | Object | 否 | 修改的字段显示属性集合 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const textFieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    const selectFieldMark = weFormSdk.convertFieldNameToId(\"xlk\");\n" +
                    "    // 批量修改\n" +
                    "    const changeDatas = {\n" +
                    "        [textFieldMark]: {value: \"文本内容\"},\n" +
                    "        [selectFieldMark]: {value: \"4765016625940566613\"}\n" +
                    "    }\n" +
                    "    const changeVariable = {\n" +
                    "        [textFieldMark]: {viewAttr: 2},\n" +
                    "        [selectFieldMark]: {viewAttr: 3}\n" +
                    "    }\n" +
                    "    weFormSdk.changeMoreField(changeDatas, changeVariable);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "37",
                "deleteType": 0,
                "name": "3.7 根据字段ID获取字段信息",
                "remark": "getFieldInfo: (fieldMark: string) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | String | 是 | 字段Id、字段标识，格式为: {字段Id} | \n" +
                    "##### 返回值 \n " +
                    "| 名称 | 类型  | 说明 |\n" +
                    "| --- | --- | --- | \n" +
                    "| fieldId | String | 字段id | \n" +
                    "| dataKey | String | 字段可见的key标记, 3.1使用 | \n" +
                    "| name | String | 字段名称 | \n" +
                    "| componentKey | String | 字段key标识 | \n" +
                    "| isSingle | boolean | 是否单选 | \n" +
                    "| readOnly | boolean | 是否只读 | \n" +
                    "| required | boolean | 是否必填 | \n" +
                    " \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const textFieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    const fieldInfo = weFormSdk.getFieldInfo(textFieldMark);\n" +
                    "    // id、title、componentKey、required等关键信息\n" +
                    "    console.log(fieldInfo);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "38",
                "deleteType": 0,
                "name": "3.8 获取表单下所有字段",
                "remark": "listFieldInfo(): any;",
                "example": "##### 参数说明 \n" +
                    "无 \n\n" +
                    "##### 返回值 \n " +
                    "| 名称 | 类型  | 说明 |\n" +
                    "| --- | --- | --- | \n" +
                    "| fieldId | String | 字段id | \n" +
                    "| dataKey | String | 字段可见的key标记, 3.1使用 | \n" +
                    "| name | String | 字段名称 | \n" +
                    "| componentKey | String | 字段key标识 | \n" +
                    "| isSingle | boolean | 是否单选 | \n" +
                    "| readOnly | boolean | 是否只读 | \n" +
                    "| required | boolean | 是否必填 | \n" +
                    " \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取所有字段\n" +
                    "    const fieldInfos = weFormSdk.listFieldInfo();\n" +
                    "    console.log(fieldInfos);" +
                    "```",
                "category": 2,
                "showOrder": 0
            }
        ]
    },
    {
        "id": "4",
        "deleteType": 0,
        "name": "4.字段事件绑定、组件复写",
        "showOrder": 4,
        "functions": [
            {
                "id": "41",
                "deleteType": 0,
                "name": "4.1 表单字段值变化触发事件",
                "remark": "bindFieldChangeEvent: (fieldMarkStr: any, fun: (id?: string, value?: string) => void) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMarkStr | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id}， 多个字段使用,分隔 | \n" +
                    "| fun | Function | 是 | 字段值变化触发的自定义函数，函数默认传递以下参数，data:{id: fieldMark, value：修改后的值} | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const textFieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    const selectFieldMark = weFormSdk.convertFieldNameToId(\"xlk\");\n" +
                    "    // 绑定事件，对主表字段和明细表的某一行绑定\n" +
                    "    weFormSdk.bindFieldChangeEvent(`${textFieldMark},${selectFieldMark}`, (data) => {\n" +
                    "        // 取字段标识\n" +
                    "        const fieldMark = data.id;\n" +
                    "        // 取字段修改的值\n" +
                    "        const value = data.value;\n" +
                    "        console.log(data);\n" +
                    "    });" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "42",
                "deleteType": 0,
                "name": "4.2 明细字段值变化触发事件",
                "remark": "bindDetailFieldChangeEvent: (fieldMarkStr: string, fun: (data: any) => void) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMarkStr | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id}， 多个字段使用,分隔 | \n" +
                    "| fun | Function | 是 | 字段值变化触发的自定义函数，函数默认传递以下参数，data:{id: fieldMark, value：修改后的值} | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const textFieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    const selectFieldMark = weFormSdk.convertFieldNameToId(\"xlk\");\n" +
                    "    // 绑定事件，对明细表整列字段绑定\n" +
                    "    weFormSdk.bindDetailFieldChangeEvent(`${textFieldMark},${selectFieldMark}`, (data) => {\n" +
                    "        // 取字段标识\n" +
                    "        const fieldMark = data.id;\n" +
                    "        // 取字段修改的值\n" +
                    "        const value = data.value;\n" +
                    "        // 修改行号\n" +
                    "        const rowId = data.rowId;\n" +
                    "        console.log(data);\n" +
                    "    });" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "43",
                "deleteType": 0,
                "name": "4.3 字段区域绑定动作事件",
                "remark": "bindFieldAction: (type: \"onblur\" | \"onfocus\" | \"onclick\" | \"ondbclick\" | \"mouseover\" | \"mouseout\", fieldMarkStr: string, fun: (data: any) => void) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| type | string | 是 | 动作类型，见上表 | \n" +
                    "| fieldMarkStr | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id}， 多个字段使用,分隔 | \n" +
                    "| fun | Function | 是 | 字段值变化触发的自定义函数，函数默认传递以下参数，data:{id: fieldMark, value：修改后的值} | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const textFieldMark = weFormSdk.convertFieldNameToId(\"wbk\");\n" +
                    "    const selectFieldMark = weFormSdk.convertFieldNameToId(\"xlk\");\n" +
                    "    // 绑定事件，对明细表整列字段绑定\n" +
                    "    weFormSdk.bindFieldAction(\"onblur\", `${textFieldMark},${selectFieldMark}`, (data) => {\n" +
                    "        // 取字段标识\n" +
                    "        const fieldMark = data.id;\n" +
                    "        // 取字段修改的值\n" +
                    "        const value = data.value;\n" +
                    "        // 修改行号\n" +
                    "        const rowId = data.rowId;\n" +
                    "        console.log(data);\n" +
                    "    });" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "44",
                "deleteType": 0,
                "name": "4.4 自定义渲染表单字段",
                "remark": "proxyFieldComp(fieldMark: string, el: React.Component, range: string | undefined): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id}, 注：明细字段不传行号，为整列生效 | \n" +
                    "| el | React.Component | 是 | 渲染的组件, 建议用React, js语法请自行查询 | \n" +
                    "| range | string | 否 | 作用范围，默认全部，(1:只读、2:可编辑、3:必填),组合后逗号分隔 | \n" +
                    "##### 返回值 \n void \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   // 获取表单实例\n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 获取主表字段的fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId('dxwb_md31');\n" +
                    "   // 复写指定组件，全部状态, 用react\n" +
                    "   weFormSdk.proxyFieldComp(fieldMark, React.createElement('div', {fieldMark}, \"复写多行文本组件的内容\"));\n" +
                    "   // 复写编辑状态下的组件，用html格式\n" +
                    "   weFormSdk.proxyFieldComp(fieldMark, \"复写多行文本组件的展示内容\", '2');\n" +
                    "   // 复写明细字段，指定行复写\n\n" +
                    "   // 获取明细表fieldId\n" +
                    "   const detailMark = weFormSdk.convertFieldNameToId('mx_detail_dt1');\n" +
                    "   // 获取第一行的行Id、rowId\n" +
                    "   const detailRowId = weFormSdk.getDetailRowIdByIndex(detailMark, 1);\n" +
                    "   // 获取主表字段的fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId('mx_dxwb_md31');\n" +
                    "   // 复写指定行的组件，全部状态, 用react; 注：`${fieldMark}_${detailRowId}`为ES6语法的拼接字符串，等同于 fieldMark+\"_\"+detailRowId\n" +
                    "   weFormSdk.proxyFieldComp(`${fieldMark}_${detailRowId}`, React.createElement('div', {fieldMark}, \"复写多行文本组件的内容\"));\n" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "45",
                "deleteType": 0,
                "name": "4.5 自定义追加渲染表单字段",
                "remark": "afterFieldComp(fieldMark: string, el: React.Component, range: string | undefined): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id}, 注：明细字段不传行号，为整列生效 | \n" +
                    "| el | React.Component | 是 | 渲染的组件, 建议用React, js语法请自行查询 | \n" +
                    "| range | string | 否 | 作用范围，默认全部，(1:只读、2:可编辑、3:必填),组合后逗号分隔 | \n" +
                    "##### 返回值 \n void \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   // 获取表单实例\n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 复写组件\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId('dxwb_md31');\n" +
                    "   // 指定组件后追加，全部状态, 用react\n" +
                    "   weFormSdk.afterFieldComp(fieldMark, React.createElement('div', {fieldMark}, \"追加多行文本组件的内容\"));\n" +
                    "   // 编辑状态下的组件追加，用html格式\n" +
                    "   weFormSdk.afterFieldComp(fieldMark, \"追加多行文本组件的展示内容\", '2');" +
                    "   // 明细字段的示例，参考4.4的明细字段" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "46",
                "deleteType": 0,
                "name": "4.6 函数式自定义渲染表单字段",
                "remark": "proxyFieldContentComp(fieldMark: string, fun: any): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id}, 注：明细字段不传行号，为整列生效 | \n" +
                    "| fun | Function | 是 | 代理的函数，此函数必须有返回值，返回自定义渲染的组件 info 字段基础信息，包括字段值、字段属性等等 compFn 代理前原字段组件函数，可通过此函数获取原组件 | \n" +
                    "##### 返回值 \n void \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   // 获取表单实例\n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 复写组件\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId('dxwb_md31');\n" +
                    "   // 用函数式，可根据条件控制渲染组件\n" +
                    "   weFormSdk.proxyFieldContentComp(fieldMark, (props, component)=>{\n" +
                    "       return React.createElement('div', {fieldMark}, \"函数渲染多行文本组件的内容\");\n" +
                    "   });" +
                    "   // 明细字段的示例，参考4.4的明细字段" +
                    "```",
                "category": 2,
                "showOrder": 0
            }
        ]
    },
    {
        "id": "5",
        "deleteType": 0,
        "name": "5.明细表操作相关",
        "showOrder": 5,
        "functions": [
            {
                "id": "51",
                "deleteType": 0,
                "name": "5.1 添加明细行并设置初始值",
                "remark": "addDetailRow: (detailMark: string, initAddRowData?: any) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| initAddRowData | Object | 是 | 给新增后设置初始值, 格式与3.2一致 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 获取明细表字段fieldId" +
                    "    const detailFieldMark = weFormSdk.convertFieldNameToId(\"dhwb_12sr2\");\n" +
                    "    // 添加行并设置默认值\n" +
                    "    weFormSdk.addDetailRow(detailMark, {[detailFieldMark]: {value: \"内容\"}})" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "52",
                "deleteType": 0,
                "name": "5.2 删除明细表指定行/全部行",
                "remark": "delDetailRow: (detailMark: string, rowIdMark: string) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| rowIdMark | String | 是 | 需要删除的行标示，删除全部行:all, 删除部分行 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 删除行号,根据rowId\n" +
                    "    weFormSdk.delDetailRow(detailMark, \"17866566556566\");\n" +
                    "    // 删除全部行\n" +
                    "    weFormSdk.delDetailRow(detailMark, \"all\");" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "53",
                "deleteType": 0,
                "name": "5.3 获取明细行所有行Id",
                "remark": "getDetailAllRowIndexStr: (detailMark: string) => string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 获取明细行标识、明细行Id、rowId\n" +
                    "    const rowIdStr = weFormSdk.getDetailAllRowIndexStr(detailMark);\n" +
                    "    // 803945585040474130,803945585040474136,803945585040474142\n" +
                    "    console.log(rowIdStr);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "54",
                "deleteType": 0,
                "name": "5.4 获取明细总行数",
                "remark": "getDetailRowCount(detailMark: string): string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "##### 返回值 \n number \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 3\n" +
                    "    const detailRowStr = weFormSdk.getDetailRowCount(detailMark);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "55",
                "deleteType": 0,
                "name": "5.5 获取明细行下标，根据明细行Id",
                "remark": "getDetailRowSerailNum(detailMark: string, rowId: string): string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| rowId | string | 是 | 明细表行Id、rowId | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 这是结果的所在行下标：3\n" +
                    "    const detailRowStr = weFormSdk.getDetailRowSerailNum(detailMark,\"805922304979501066\");" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "56",
                "deleteType": 0,
                "name": "5.6 添加明细时默认复制最后一行记录",
                "remark": "setDetailAddUseCopy(detailMark: string, needCopy: boolean): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| needCopy | Boolean | 否 | 是否需要启用复制，true：启用，false：不启用 | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 复制最后一行\n" +
                    "    weFormSdk.setDetailAddUseCopy(detailMark, true);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "57",
                "deleteType": 0,
                "name": "5.7 根据明细行标识和rowIndex下标，获取rowId行号",
                "remark": "getDetailRowIdByIndex: (detailMark: string, rowIndex: number) => string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| rowIndex | number | 是 | 明细行下标，从1开始，如：1、2、3; 注：按照显示顺序来 | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 获取第一行的rowId\n" +
                    "    const oneRowId = weFormSdk.getDetailRowIdByIndex(detailMark, 1);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "58",
                "deleteType": 0,
                "name": "5.8 根据明细行标识和rowId行号，获取rowIndex下标",
                "remark": "getDetailIndexByRowId: (detailMark: string, rowId: string) => string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| rowId | string | 是 | 明细行Id、rowId | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const detailMark = weFormSdk.convertFieldNameToId(\"mxbo16sr2\");\n" +
                    "    // 获取明细行Id的下标位置\n" +
                    "    const rowIndex = weFormSdk.getDetailIndexByRowId(detailMark, '805922304979501066');" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "59",
                "deleteType": 0,
                "name": "5.9 选中明细指定行/全部行",
                "remark": "checkDetailRow(detailMark: string, rowIndexMark: string | undefined, needClearBeforeChecked: boolean | undefined): void;",
                "example": "" +
                    "##### 说明 \n 此方法可灵活使用，依靠参数needClearBeforeChecked可实现清除选中的逻辑 \n\n" +
                    "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| rowIndexMark | string | 是 | 需要选中的行标示，选中全部行:all,选中部分行：”805922304979501066,805922304979501067,805922304979501068” | \n" +
                    "| needClearBeforeChecked | string | 是 | 是否需要清除已选 | \n" +
                    "##### 返回值 \n void \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   // 说明：此方法可灵活使用，依靠参数needClearBeforeChecked可实现清除选中的逻辑\n" +
                    "   // 获取表单实例\n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 明细表id\n" +
                    "   const detailMark = weFormSdk.convertFieldNameToId('shm_glsj_mxb1');\n" +
                    "   // 选中所有行\n" +
                    "   weFormSdk.checkDetailRow(detailMark, \"all\", true);\n\n" +
                    "   // 获取第1行rowId\n" +
                    "   const oneRowId = weFormSdk.getDetailRowIdByIndex(detailMark, 1);\n" +
                    "   // 选中第一行\n" +
                    "   weFormSdk.checkDetailRow(detailMark, oneRowId, true);\n" +
                    "   // 根据rowId选中指定行\n" +
                    "   weFormSdk.checkDetailRow(detailMark, '167954015280618401,167954015280624841', true);\n" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "510",
                "deleteType": 0,
                "name": "5.10 获取明细选中行下标",
                "remark": "getDetailCheckedRowIndexStr(detailMark: string): string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   // 获取表单实例\n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 明细表id\n" +
                    "   const detailMark = weFormSdk.convertFieldNameToId('shm_glsj_mxb1');\n" +
                    "   // 选中指定行, 注: rowId需要先获取\n" +
                    "   weFormSdk.checkDetailRow(detailMark, '167954015280618401,167954015280624841', true);\n" +
                    "   // 获取选中行的rowId; 结果: 167954015280618401,167954015280624841\n" +
                    "   weFormSdk.getDetailCheckedRowIndexStr(detailMark)" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "511",
                "deleteType": 0,
                "name": "5.11 控制明细数据行的显示及隐藏",
                "remark": "controlDetailRowDisplay(detailMark: string, rowIndexMark: string, needHide: boolean): void",
                "example": "" +
                    "##### 说明 \n 只是界面效果隐藏，序号不会变化，即被隐藏行的前后行序号会断层不连续\n\n" +
                    "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| detailMark | string | 是 | 明细表Id、明细表标识 | \n" +
                    "| rowIndexMark | string | 是 | 需要控制的行标示，全部行:all,部分行：”805922304979501066,805922304979501067,805922304979501068” | \n" +
                    "| needHide | string | 是 | 是否隐藏行，true:隐藏，false:显示 | \n" +
                    "##### 返回值 \n void \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   // 获取表单实例\n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 明细表id\n" +
                    "   const detailMark = weFormSdk.convertFieldNameToId('shm_glsj_mxb1');\n" +
                    "   // 设置行隐藏\n" +
                    "   weFormSdk.controlDetailRowDisplay(detailMark, '167954015280618401,167954015280624841', true);\n" +
                    "```",
                "category": 2,
                "showOrder": 0
            }
        ]
    },
    {
        "id": "6",
        "deleteType": 0,
        "name": "6.表单全局操作",
        "showOrder": 6,
        "functions": [
            {
                "id": "61",
                "deleteType": 0,
                "name": "6.1 获取当前打开表单的基础信息",
                "remark": "getBaseInfo: () => Object;",
                "example": "##### 参数说明 \n" +
                    "无 \n\n" +
                    "##### 返回值 \n object \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    const formInfo = weFormSdk.getBaseInfo();\n" +
                    "    console.log(formInfo);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "62",
                "deleteType": 0,
                "name": "6.2 可控制显示时间的message信息",
                "remark": "showMessage(msg: string, type?: number, duration?: number, isStatic?: boolean): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| msg | string | 是 | 提示信息内容 | \n" +
                    "| type | Number | 是 | 提示类型，1(警告)、2(错误)、3(成功)，默认为1，不同类型提示信息效果不同 | \n" +
                    "| duration | Number | 是 | 多长时间自动消失，单位秒，默认为1.5秒 | \n" +
                    "##### 返回值 \n 字段id \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 普通提示\n" +
                    "    window.WeFormSDK.showMessage(\"这是一个成功提示\", 3, 2);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "63",
                "deleteType": 0,
                "name": "6.3 系统样式的Confirm确认框",
                "remark": "showConfirm(content: string, okEvent?: () => void, cancelEvent?: () => void, otherInfo?: Object, isStatic?: boolean): void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| content | string | 是 | 确认信息 | \n" +
                    "| okEvent | Function | 是 | 点击确认事件 | \n" +
                    "| cancelEvent | Function | 否 | 点击取消事件 | \n" +
                    "| otherInfo | Object | 否 | 自定义信息(按钮名称) | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "window.WeFormSDK.showConfirm(\"这是一个二次确认框\",\n" +
                    "            () => {\n" +
                    "                // 点击确认回调\n" +
                    "            }, () => {\n" +
                    "                // 点击取消回调\n" +
                    "            }, {\n" +
                    "                title: \"信息确认\",        //弹确认框的title，仅PC端有效\n" +
                    "                okText: \"需要\",          //自定义确认按钮名称\n" +
                    "                cancelText: \"不需要\"     //自定义取消按钮名称\n" +
                    "            }\n" +
                    ");" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "65",
                "deleteType": 0,
                "name": "6.5 自定义弹框",
                "remark": "openCustomDialog(prop:any): any;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| content | string|Object | 是 | 弹框展示内容，字符串或DOM | \n" +
                    "| icon | string | 否 | 弹框图标 | \n" +
                    "| style | Object | 否 | 自定义样式 | \n" +
                    "| footer | any[] | 否 | 底部按钮DOM，多个， 有值不再出现默认按钮 | \n" +
                    "| onOk | Function | 否 | 点击确认事件，点击会自动关闭，默认确认按钮的事件 | \n" +
                    "| onCancel | Function | 否 | 点击取消事件，点击会默认关闭，默认确认按钮的事件 | \n" +
                    "| width | string|number | 否 | 宽度 | \n" +
                    "| height | string|number | 否 | 高度 | \n" +
                    "| top | string|number | 否 | 顶部距离 | \n" +
                    "| bottom | string|number | 否 | 底部距离 | \n" +
                    "| left | string|number | 否 | 左侧距离 | \n" +
                    "| right | string|number | 否 | 右侧距离 | \n" +
                    "##### 返回值 \n " +
                    " 参数 | 类型  | 说明 |" +
                    "| --- | --- | --- | \n" +
                    "| destroy | Function | 销毁弹框 | \n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "const onClickCreate = () => console.log(\"新建\");\n" +
                    "const onClickSave = () => console.log(\"保存\");\n" +
                    "const onClickCancel = () => dialogComponent?.destroy();\n" +
                    "\n" +
                    "const dialogComponent = window.WeFormSDK.openCustomDialog({\n" +
                    "      content: \"这里可以使用iframe嵌套页面\",\n" +
                    "      width: \"500px\",\n" +
                    "      height: \"500px\"\n" +
                    "});" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "66",
                "deleteType": 0,
                "name": "6.6 刷新表单页面",
                "remark": "reloadPage: (params?: any) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| params | Object | 否 | 自定义参数，覆盖默认参数ID} | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "\tweFormSdk.reloadPage();" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "67",
                "deleteType": 0,
                "name": "6.7 扩展提交操作发送给服务端的参数",
                "remark": "appendSubmitParam: (params?: any) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| params | Object | 否 | 自定义参数，覆盖默认参数ID} | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    weFormSdk.appendSubmitParam({customParam: {type: \"demo\"}});" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "68",
                "deleteType": 0,
                "name": "6.8 触发一次必填验证",
                "remark": "verifyFormRequired: (mustAddDetail?: Boolean, fieldRequired?: Boolean) => any;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| mustAddDetail | Boolean | 否 | 自是否校验必须新增空明细，默认为是 | \n" +
                    "| fieldRequired | Boolean | 否 | 是否校验字段必填，默认为是 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 触发一次必填验证\n" +
                    "    weFormSdk.verifyFormRequired();" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "69",
                "deleteType": 0,
                "name": "6.9 页面全局Loading",
                "remark": "getLoadingGlobal: () => any;",
                "example": "##### 参数说明 \n" +
                    "无\n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "// 启用遮罩loading\n" +
                    "WeFormSDK.getLoadingGlobal().start();\n" +
                    "// 停止遮罩loading\n" +
                    "WeFormSDK.getLoadingGlobal().end();\n" +
                    "// 销毁遮罩loading\n" +
                    "WeFormSDK.getLoadingGlobal().destroy();\n" +
                    "//具体使用根据业务场景需求，正常使用可以直接调用1、3就可以\n" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "610",
                "deleteType": 0,
                "name": "6.10 控制表单关闭提示状态",
                "remark": "setFormTipCloseStatus: (open: boolean) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| open | Boolean | 是 | false为关闭弹框提示，true为打开提示，默认为true | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 获取表单实例\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 关闭弹框提示\n" +
                    "    weFormSdk.setFormTipCloseStatus(false);" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "611",
                "deleteType": 0,
                "name": "6.11 是否移动端, true表示是eMobile、微信、钉钉等移动终端，false代表PC端",
                "remark": "isMobile(): boolean;",
                "example": "" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    // 方式1， 通过对象静态方法调用，返回根据环境的check\n" +
                    "    window.WeFormSDK.isMobile()\n" +
                    "    // 方式2， 通过表单实例的调用，返回表单的isMobile属性\n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    weFormSdk.isMobile();" +
                    "```",
                "category": 2,
                "showOrder": 0
            }
        ]
    },
    {
        "id": "76",
        "deleteType": 0,
        "name": "7.特定字段类型操作",
        "showOrder": 7,
        "functions": [
            {
                "id": "71",
                "deleteType": 0,
                "name": "7.1 扩展浏览按钮取数接口参数值",
                "remark": "appendBrowserDataUrlParam: (fieldMark: string, jsonParam: any) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| jsonParam | Object | 是 | 扩展的url参数 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "    const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "    // 获取主表字段fieldId\n" +
                    "    const fieldMark = weFormSdk.convertFieldNameToId(\"llan\");\n" +
                    "    // 扩展参数otherParam{type: \"other\"}\n" +
                    "    weFormSdk.appendBrowserDataUrlParam(fieldMark, {otherParam: {type: \"other\"}});" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "72",
                "deleteType": 0,
                "name": "7.2 获取浏览按钮选项Id值",
                "remark": "getBrowserOptionId: (fieldMark: string, splitChar?: string) => string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| splitChar | String | 是 | 分隔符，默认是[,] | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 获取主表字段fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId(\"llan\");\n" +
                    "   // 获取选中的浏览的id\n" +
                    "   const browserIdStr = weFormSdk.getBrowserOptionId(fieldMark , \",\");" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "73",
                "deleteType": 0,
                "name": "7.3 获取浏览按钮的显示值",
                "remark": "getBrowserShowName: (fieldMark: string, splitChar?: string) => string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| splitChar | String | 是 | 分隔符，默认是[,] | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 获取主表字段fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId(\"llan\");\n" +
                    "   // 获取选中的浏览的名称 \n" +
                    "   const browserNameStr = weFormSdk.getBrowserShowName(fieldMark , \",\");" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "74",
                "deleteType": 0,
                "name": "7.4 移除选择框字段选项",
                "remark": "removeSelectOption: (fieldMark: string, optionKeys: string) => void;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| optionKeys | String | 是 | 需要移除的Option选项key值，多个以逗号分隔 | \n" +
                    "##### 返回值 \n 无 \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 获取主表字段fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId(\"fxk\");\n" +
                    "   // 移出选中的选项\n" +
                    "   weFormSdk.removeSelectOption(fieldMark , '845584790598795269,845584790598795270');" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "75",
                "deleteType": 0,
                "name": "7.5 获取选择框字段的显示值",
                "remark": "getSelectShowName: (fieldMark: string, splitChar?: string) => string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| splitChar | String | 否 | 需分隔符，默认是[,] | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 获取主表字段fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId(\"fxk\");\n" +
                    "   // 获取显示的选项名称\n" +
                    "   const selectNameStr = weFormSdk.getSelectShowName(fieldMark , \",\");" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "76",
                "deleteType": 0,
                "name": "7.6 控制选择框字段选项",
                "remark": "controlSelectOption: (fieldMark: string, optionKeys: string) => string;",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "| optionKeys | String | 是 |  显示的Option选项key值，多个以逗号分隔；注：如果是明细行，不指定行则列生效 | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 获取主表字段fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId(\"fxk\");\n" +
                    "   // 控制仅显示这两个选项\n" +
                    "   weFormSdk.controlSelectOption(fieldMark, '845584790598795269,845584790598795270')" +
                    "```",
                "category": 2,
                "showOrder": 0
            },
            {
                "id": "77",
                "deleteType": 0,
                "name": "7.7 获取浏览数据、浏览选项对象",
                "remark": "getBrowserOptionEntity: (fieldMark: string) => any[];",
                "example": "##### 参数说明 \n" +
                    "| 参数 | 类型   | 必需 | 说明 |\n" +
                    "| --- | --- | --- | --- | \n" +
                    "| fieldMark | string | 是 | 字段Id、字段标识，格式为: {字段Id}、{字段Id}_{明细行Id} | \n" +
                    "##### 返回值 \n string \n\n" +
                    "##### 示例 \n" +
                    "```typescript \n" +
                    "   const weFormSdk = window.WeFormSDK.getWeFormInstance();\n" +
                    "   // 获取主表字段fieldId\n" +
                    "   const fieldMark = weFormSdk.convertFieldNameToId(\"fxk\");\n" +
                    "   // 获取选项数组， 对象结构: [{id:'xxx', name: 'xxx'}]; 结构同3.3的specialObj入参结构\n" +
                    "   const optionList = weFormSdk.getBrowserOptionEntity(fieldMark)" +
                    "```",
                "category": 2,
                "showOrder": 0
            }
        ]
    }
]
